package q149_maxPoints;

public class Solution_1 {
    /*
    找出所有点中 在同一条直线的最多点数
    直接使用暴力解法 循环三次首先定两个点 此后斜率与这两个点斜率一致的点 就在同一条直线上
    因为根据固定两个点进行求斜率 所以不需要考虑截距问题
    需要注意的是 不能通过相除后比较来确定在同一条直线上
    会面临精度问题和垂直问题
     */
    public int maxPoints(int[][] points) {
        int ans = 1;
        for (int i = 0; i < points.length; i++) {
            int[] x = points[i];
            for (int j = i + 1; j < points.length; j++) {
                int[] y = points[j];
                int curLine = 2;
                for (int k = j + 1; k < points.length; k++) {
                    int[] z = points[k];
                    if ((y[1] - x[1]) * (z[0] - x[0]) == (z[1] - x[1]) * (y[0] - x[0])){
                        curLine++;
                    }
                }
                ans = Math.max(ans, curLine);
            }
        }

        return ans;
    }
}
